/*
 *  Лицензия MIT
 * 
 *  Copyright 2011 Salnikov Aleksey.
 * 
 *  Данная лицензия разрешает, безвозмездно, лицам, получившим копию данного программного обеспечения
 *  и сопутствующей документации (в дальнейшем именуемыми "Программное Обеспечение"),
 *  использовать Программное Обеспечение без ограничений, включая неограниченное право
 *  на использование, копирование, изменение, объединение, публикацию, распространение,
 *  сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам,
 *  которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:
 * 
 *  Вышеупомянутый копирайт и данные условия должны быть включены во все копии или значимые
 *  части данного Программного Обеспечения.
 * 
 *  ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ ЛЮБОГО ВИДА ГАРАНТИЙ,
 *  ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ,
 *  СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И НЕНАРУШЕНИЯ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ
 *  НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ
 *  ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ
 *  С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
 *  ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
 */

package look;

import CommonTools.DesignTools;
import CommonTools.Settings;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/**
 * Класс окна настроек клиентской части
 *
 * @author Salnikov Aleksey
 */
public class SettingsWindow extends JFrame{

    protected JTextField serverIp, serverPort;
    protected JPasswordField pass;
    protected JButton save;

    public SettingsWindow()
    {
        super("Настройки | Клиент Ordo");
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        /*******************************************************
         * Расставляем все компоненты
         ******************************************************/
        Container c = this.getContentPane();
        c.setLayout(new GridBagLayout());
        GridBagConstraints gbcL = new GridBagConstraints();
        GridBagConstraints gbcF = new GridBagConstraints();
        gbcL.weightx = 0.5;
        gbcL.weighty = 0.5;
        gbcL.anchor = gbcL.NORTHWEST;
        gbcL.gridx = 0;
        gbcL.gridy = 0;

        gbcL.insets = new Insets(8,3,0,5);
        gbcF.insets = new Insets(3,0,0,5);
        gbcF.ipadx = 150;
        gbcF.fill = gbcF.HORIZONTAL;

        JLabel ip = new JLabel("IP сервера:");
        JLabel port = new JLabel("Порт сервера:");
        JLabel passL = new JLabel("Пароль:");
        c.add(ip, gbcL);
        gbcL.gridy = 1;
        c.add(port, gbcL);
        gbcL.gridy = 2;
        c.add(passL, gbcL);

        serverIp = new JTextField();
        serverPort = new JTextField();
        pass = new JPasswordField();
        pass.setEchoChar('•');
        gbcF.gridx = 1;
        gbcF.gridy = 0;
        c.add(serverIp, gbcF);
        gbcF.gridy = 1;
        c.add(serverPort, gbcF);
        gbcF.gridy = 2;
        c.add(pass, gbcF);

        save = new JButton("Сохранить");
        gbcF.gridy = 3;
        gbcF.anchor = gbcF.SOUTHEAST;
        gbcF.fill = gbcF.NONE;
        c.add(save, gbcF);
        
        loadConfiguration();

        save.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    saveConf();
                }
            });

        /*******************************************************
         * Последняя настройка
         ******************************************************/
        this.setResizable(false);
        DesignTools.centeredWindow(this);
        this.pack();
        this.validate();
        this.setVisible(true);
    }

    protected void loadConfiguration()
    {
        serverIp.setText(Settings.getParametrValue("serverip"));
        serverPort.setText(Settings.getParametrValue("serverport"));
    }

    protected void saveConf()
    {
        if (Settings.getParametrValue("secretword").equals(Settings.codeString(pass.getText())))
            if (serverIp.getText().length() > 0 && serverPort.getText().length() > 0)
            {
                Settings.changeParametr("serverip", serverIp.getText());
                Settings.changeParametr("serverport", serverPort.getText());
                Settings.saveConfiguration();
                this.dispose();
            }
            else
                DesignTools.showMessage("Настройки не сохранены", "Все поля должны быть заполнены", false);
        else
            DesignTools.showMessage("Настройки не сохранены", "Пароль неверный", false);
    }

}
